Aurora PostgreSQL から Amazon Bedrock へ直接アクセスできるようになりました

Aurora PostgreSQL から Amazon Bedrock へ直接アクセスできるようになりました

Clock Icon2023.12.22

こんにちは、森田です。

以下のアップデートで、Amazon Aurora PostgreSQL から Amazon Bedrock へ直接アクセスできるようになりました。

Bedrockへアクセスする際には、Auroraのロール設定とSQL関数を利用することで可能です。

本記事では、実際に Amazon Aurora PostgreSQL から Amazon Bedrock へ直接アクセスするまでの手順をご紹介します。

やってみる

Aurora PostgreSQL作成

Aurora PostgreSQLをコンソールから作成します。

2023/12/22時点では、以下のアップデートでサポートされたPostgreSQLのバージョンでBedrock(aws_ml2.0)の利用が可能です。

Aurora PostgreSQL (Compatible with PostgreSQL 15.5)を選択して、作成を行います。

IAMロール作成

続いて、IAMロールの作成を行います。

特にポリシーは付与せず、作成を行います。

ポリシーを設定

IAMロール作成後に、インラインポリシーを設定します。

Aurora から Bedrock の実行を行うため、BedrockのInvokeModelをAllowするポリシーを作成します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "bedrock:InvokeModel",
            "Resource": "arn:aws:bedrock:*::foundation-model/*"
        }
    ]
}

設定後は以下のようになります。

IAMロールをAuroraへ追加

コンソールで先ほど作成したAuroraを開き、接続とセキュリティにあるIAMロールの管理から作成したロールを指定します。

以上で、コンソールでの Aurora の設定は完了です。

続いて、データベースに接続を行い、拡張機能のインストールを行います。

拡張機能のインストール

psqlクライアントを利用して、データベースへ接続を行います。

psql -h エンドポイント名\
-U postgres \
-p 5432 \
-d データベース名 \
-W 

接続後、以下のコマンドを実行して、aws_mlのインストールを行います。

=> CREATE EXTENSION IF NOT EXISTS aws_ml CASCADE;
NOTICE:  installing required extension "aws_commons"
CREATE EXTENSION

Bedrockの実行が可能なaws_mlのバージョンは、2.0ですので、以下コマンドを実行して確認します。

=> select * FROM pg_available_extensions where name like 'aws%';
    name     | default_version | installed_version |                   comment                   
-------------+-----------------+-------------------+---------------------------------------------
 aws_lambda  | 1.0             |                   | AWS Lambda integration
 aws_commons | 1.2             | 1.2               | Common data types across AWS services
 aws_ml      | 2.0             | 2.0               | ml integration
 aws_s3      | 1.2             |                   | AWS S3 extension for importing data from S3

インストール後は以下のようにaws_bedrockを利用して、Bedrock へ直接アクセスすることが可能です。

SELECT aws_bedrock.invoke_model (
    'amazon.titan-text-express-v1',
    'application/json',
    'application/json',
    '{"inputText": "what is orange"}'
    );

上記では、以下のように引数を指定しております。

  • モデルの識別子:amazon.titan-text-express-v1
  • モデルへの入力値(プロンプト): {"inputText": "what is orange"}

実行結果は以下となります。

{
	"inputTextTokenCount": 3,
	"results": [
		{
			"tokenCount": 8,
			"outputText": "\nAn orange is a citrus fruit.",
			"completionReason": "FINISH"
		}
	]
}

実行結果からも正常にBedrockへアクセスが行われていることが確認できました。

さいごに

今回は、aws_bedrock.invoke_modelでモデルの実行を行いましたが、他にもaws_bedrock.invoke_model_get_embeddingsといった埋め込みベクトルを取得する関数も用意されています。

データベースから簡単にBedrockへアクセスができるようになるアップデートですので、ぜひチェックしてみてください。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.